/* Copyright (c) 2012 Michele Roohani, Frank Harper, Pierre Gros, Pierre LEVY
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.aocfrance.app.ui.activity;

import java.util.List;

import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.widget.TextView;

import com.aocfrance.app.Constants;
import com.aocfrance.app.R;
import com.aocfrance.app.model.AOC;
import com.aocfrance.app.model.Commune;
import com.aocfrance.app.model.Producteur;
import com.aocfrance.app.service.CommuneService;
import com.aocfrance.app.service.ProducteurService;
import com.aocfrance.app.ui.fragment.ProducteurDetailFragment;
import com.aocfrance.app.ui.fragment.ProducteurListFragment;
import com.aocfrance.app.ui.fragment.ProducteurListFragment.ProducteurListEventsCallback;

/**
 *
 * @author pierre
 */
public class CommuneAOCActivity extends FragmentActivity implements ProducteurListEventsCallback
{

    private Commune mCurrentCommune;
    private int mProducteurId;
    private ProducteurListFragment mProducteurListFragment;
    private List<Producteur> mListProducteurs;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.commune_aoc);
        FragmentManager fm = getSupportFragmentManager();

        mProducteurListFragment = (ProducteurListFragment) fm.findFragmentById(R.id.fragment_producteurs_list);

        Intent intent = getIntent();
        String ci = intent.getStringExtra(Constants.EXTRA_COMMUNE_CI);
        mCurrentCommune = CommuneService.get(ci);


        TextView tvCommune = (TextView) findViewById(R.id.name_commune);
        tvCommune.setText(mCurrentCommune.getName());
        TextView tvAOC = (TextView) findViewById(R.id.name_aoc);
        
        StringBuilder sb = new StringBuilder();
        boolean first = true;
        for( AOC aoc : mCurrentCommune.getAOCList() )
        {
            if( first )
            {
                sb.append( getString( R.string.label_list_aoc ));
                sb.append( aoc.getName() );
                first = false;
            }
            else
            {
                sb.append(", ");
                sb.append( aoc.getName() );
            }
        }

        tvAOC.setText( sb.toString() );

        new LoadProducteursTask().execute();
    }

    private void updateUI()
    {
        mProducteurListFragment.update(mListProducteurs);
    }

    public void onProducteurSelected(int id)
    {
        mProducteurId = id;
        FragmentManager fm = getSupportFragmentManager();
        ProducteurDetailFragment ProducteurDetailFragment = (ProducteurDetailFragment) fm.findFragmentById(R.id.fragment_producteur_detail);
        if (ProducteurDetailFragment != null)
        {
            ProducteurDetailFragment.updateProducteur(id);
        }
        else
        {
            Intent intent = new Intent(Constants.ACTION_PRODUCTEUR);
            intent.putExtra(Constants.EXTRA_PRODUCTEUR_ID, mProducteurId);
            startActivity(intent);
        }
    }

    private class LoadProducteursTask extends AsyncTask<Void, Void, Void>
    {

        @Override
        protected Void doInBackground(Void... arg0)
        {
            mListProducteurs = ProducteurService.loadProducteursCommune(mCurrentCommune.getId());
            return null;
        }

        @Override
        protected void onPostExecute(Void result)
        {
            updateUI();
        }
    }

    /*
     * //Classe qui fait la recherche dans un autre thread private class
     * MyProducteurs extends ProducteurService {
     *
     * @Override protected void onProducteursDownloaded(List<Producteur> result)
     * { mProducteurListFragment.update(result); }
     *
     * @Override protected void onProducteurDownloaded(Producteur result) { //
     * RIEN } }
     *
     */
}
